
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package logicaServer;
import datosServer.*;
//import java.util.Collections;
import java.util.*;
//import java.lang.*;

//import ve.edu.ucab.server.logica.LogicaServidor;
/**
 *
 * @author mimi
 */

//import Dominio.Reserve;
import ve.edu.ucab.server.logica.LogicaServidor;
//import ve.edu.ucab.server.logica.Conexion;

public class ComunicacionServer implements LogicaServidor
{
    //public static ListaUsuario losUsuarios;

    public static ListaPieza todasPiezas;
    public static ListaPieza piezasJugador;
    public static ListaPieza piezasOponente;
   // public static Usuario elUsuario;
   /* public static ListaPieza piezasCliente;
    public static ListaPieza piezasMaquina;
    public static ListaPieza piezasPote;
*/


    public static void lecturaXML()
    {
        Archivo.leerArchivoXMLUsuarios(ListaUsuario.getInstance());
    }

    public static void guardarXML()
    {
        Archivo.guardarArchivoXMLUsuarios(ListaUsuario.getInstance());
    }
/*
    public static void inicializarPiezas()
    {
        piezasPote = piezasPote.inicializarPiezas();

    }


    public static void generarPiezasAleatoriamente()
    {
        piezasCliente = piezasPote.generarPiezasAleatorias();
        piezasMaquina = piezasPote.generarPiezasAleatorias();
    }

*/  public static void inicializarPiezas()
    {
       todasPiezas = new ListaPieza();
       piezasJugador = new ListaPieza();
       piezasOponente = new ListaPieza();
       Archivo.CargarXMLPiezas(todasPiezas);
    }


    public static void inicializarEstructuras()
    {

   //    piezasPote = new ListaPieza();


       //losUsuarios  = new ListaUsuario();
      // losUsuarios = (ListaUsuario) losUsuarios.getMiSet();

        lecturaXML();
        inicializarPiezas();
        MezclarPiezas();
        //cargar7Piezas(piezasJugador,todasPiezas);
      /*    if (losUsuarios  == null)
        {
            losUsuarios  = new ListaUsuario();
            return true;
        }

        return false;*/
    }

    public static void MezclarPiezas()
    {
        Collections.shuffle(todasPiezas.getPiezas());
    }

    public static void cargar7Piezas(ListaPieza piezasResultado, ListaPieza piezasOriginal)
    {
        int i = 0;
        Pieza nodo = null; //boolean elimino=false;

        while (i < 7)
        {
            nodo = piezasOriginal.obtenerObjetoDeLaCasilla(i);
            piezasResultado.agregarElemento(nodo); //obtengo la primera pieza de la lista que contiene las 28 piezas mezcladas
            //elimino=piezasOriginal.removerElemento(nodo);  //elimino la pieza que obtuve en la funcion anterior para evitar que se repita...
            
            piezasOriginal = piezasOriginal.removerPiezas(piezasOriginal, nodo);

             //System.out.println("Todas las piezas en comunicacionServer\n");
            //piezasOriginal.imprimirColeccion();
            //System.out.println("Elimino en carga7piezas\n");

            i++;
        }
       // System.out.println("\nTodas las piezas restantes? en comunicacionServer\n");
       // piezasOriginal.imprimirColeccion();
       // System.out.println("Las piezas del jugador: ");piezasResultado.imprimirColeccion();
       // System.out.println("Las piezas del pote: ");piezasOriginal.imprimirColeccion();
    }



   /*  public static boolean verificarNick(Usuario registro)
    {
        if (losUsuarios != null)
        {

            return losUsuarios.RecorrerLista(registro.getNickname());//lo encontro
        }
        else
        {
            return false;
        }
    }*/
        public static boolean verificarNick(Usuario registro)
        {
            if (ListaUsuario.getInstance() != null)
            {
               if (ListaUsuario.getInstance().RecorrerLista(registro.getNickname())) //lo encontro
                return true;
            }
            
            return false;
        }

      public static boolean verificarCuenta(String nickname,String clave)
     {
        // ListaUsuario losUsuarios = new ListaUsuario();
         Usuario variable, nodoAuxiliar;
         nodoAuxiliar = new Usuario("","","","",0,0,0);

         nodoAuxiliar.setNickname(nickname);
         nodoAuxiliar.setClave(clave);

        variable = ListaUsuario.getInstance().RecorrerListaUsuario(nodoAuxiliar.getNickname());

        if (variable == null)
           return false;
        else
        {
            if ( (variable.getClave().compareTo(nodoAuxiliar.getClave())) != 0 )
                return false;
            else
                return true;
        }
        
     }

      public static String RetornoEnvioJugadaMaquina(int Vsup, int Vinf,int posX, int posY,String ImgA,String ImgB,String ImgI,String ImgD,String ImgSelec,int IDPieza)
      {
          String retorno="true:";

          String ValorS, ValorI, PosX, PosY, IdPieza; ValorS=ValorI=PosX=PosY=IdPieza="";

          ValorS = String.valueOf(Vsup);
          ValorI = String.valueOf(Vinf);
          PosX = String.valueOf(posX);
          PosY = String.valueOf(posY);
          IdPieza = String.valueOf(IDPieza);

          retorno=retorno.concat(ValorS).concat("-").concat(ValorI).concat(":");
          retorno=retorno.concat(PosX).concat("-").concat(PosY).concat(":");
          retorno=retorno.concat(ImgA).concat("-").concat(ImgB).concat("-").concat(ImgI).concat("-").concat(ImgD);
          retorno=retorno.concat(":").concat(ImgSelec).concat(":").concat(IdPieza);

          System.out.println("Retorno de la maquina => "+retorno);

          return retorno;
      }

     public static Pieza envioDelPote(ListaPieza piezasOriginal)
       {
           int i = 0;
           Pieza nodo = null;
           if (piezasOriginal.getPiezas() != null)
           {
           //boolean elimino=false;
               nodo = piezasOriginal.obtenerObjetoDeLaCasilla(i);
               piezasOriginal = piezasOriginal.removerPiezas(piezasOriginal, nodo);
           }
           return nodo;
       }

      public static String RetornoEnvioTomarDelPote (int IDFicha,int Vsup, int Vinf,String ImgA,String ImgB,String ImgI,String ImgD)
      {

          String IDF,ValorS,ValorI; IDF=ValorS=ValorI="";
          IDF = String.valueOf(IDFicha);
          ValorS = String.valueOf(Vsup);
          ValorI = String.valueOf(Vinf);

          String retorno="true:";

          retorno=retorno.concat(IDF).concat("-").concat(ValorS).concat("-").concat(ValorI).concat("-");
          retorno=retorno.concat(ImgA).concat("-").concat(ImgB).concat("-").concat(ImgI).concat("-").concat(ImgD);

          System.out.println("Retorno en tomar del pote=> "+retorno);

          return retorno;
      }

      public void InicioDeLaCabezaCola (Pieza piezaJugador,Usuario user)
      {
          String ImagenEnviadoJugador = piezaJugador.getImagenAsociadaActual();
          //System.out.println("\n(CS)ImagenDelJugador= "+ImagenEnviadoJugador);

         // System.out.println("\nLonguitud = "+ImagenEnviadoJugador.length());

          String letra = ImagenEnviadoJugador.substring(ImagenEnviadoJugador.length()-5, ImagenEnviadoJugador.length()-4);
          System.out.println("\n(CS)(InicioCC)=  "+letra);

         String PrimerValorImagen = ImagenEnviadoJugador.substring(0, ImagenEnviadoJugador.length()-6);
         String SegundoValorImagen = ImagenEnviadoJugador.substring(ImagenEnviadoJugador.length()-6, ImagenEnviadoJugador.length()-5);

        // System.out.println("\n(CS)(INICIODCC)   "+"Primer Valor es= "+PrimerValorImagen+"\n Segundo Valor es= "+SegundoValorImagen);
         int PVI, SVI; PVI = SVI = 0;
         PVI=Integer.parseInt(PrimerValorImagen);   SVI=Integer.parseInt(SegundoValorImagen);
        //  System.out.println("\n(CS)(INICIODCC)   "+"Primer Valor entero es= "+PVI+"\n Segundo Valor entero es= "+SVI);

          if (letra.compareTo("c")==0)
          {
            user.getPartida().getCabezaCola().setCabeza(PVI);
            user.getPartida().getCabezaCola().setCola(SVI);
            user.getPartida().getCabezaCola().setCoordenadaXcabeza(piezaJugador.getCoordenadaX());
            user.getPartida().getCabezaCola().setCoordenadaYcabeza(piezaJugador.getCoordenadaY());
            user.getPartida().getCabezaCola().setCoordenadaXcola(piezaJugador.getCoordenadaX());
            user.getPartida().getCabezaCola().setCoordenadaYcola(piezaJugador.getCoordenadaY());

            System.out.println("(CS)(ImagenC)\n"+"Cabeza= "+user.getPartida().getCabezaCola().getCabeza()
                                  +"  X="+user.getPartida().getCabezaCola().getCoordenadaXcabeza()+"   Y="+user.getPartida().getCabezaCola().getCoordenadaYcabeza()
                                  +"         Cola= "+user.getPartida().getCabezaCola().getCola()
                                  +"  X="+user.getPartida().getCabezaCola().getCoordenadaXcola()+"   Y="+user.getPartida().getCabezaCola().getCoordenadaYcola());
       
          }
          else
          {
            user.getPartida().getCabezaCola().setCabeza(SVI);
            user.getPartida().getCabezaCola().setCola(PVI);
            user.getPartida().getCabezaCola().setCoordenadaXcabeza(piezaJugador.getCoordenadaX());
            user.getPartida().getCabezaCola().setCoordenadaYcabeza(piezaJugador.getCoordenadaY());
            user.getPartida().getCabezaCola().setCoordenadaXcola(piezaJugador.getCoordenadaX());
            user.getPartida().getCabezaCola().setCoordenadaYcola(piezaJugador.getCoordenadaY());

            System.out.println("(CS)(ImagenD)\n"+"Cabeza= "+user.getPartida().getCabezaCola().getCabeza()
                                  +"  X="+user.getPartida().getCabezaCola().getCoordenadaXcabeza()+"   Y="+user.getPartida().getCabezaCola().getCoordenadaYcabeza()
                                  +"        Cola= "+user.getPartida().getCabezaCola().getCola()
                                  +"  X="+user.getPartida().getCabezaCola().getCoordenadaXcola()+"   Y="+user.getPartida().getCabezaCola().getCoordenadaYcola());
          
          }
    }

      
/*

        public boolean BuscarNumRandomList(String valor,Usuario user)
        {
            Iterator ite = user.getListRandom().iterator();//listRandom.iterator();
            int cont =0;
            int comparo;

            Object [] arregloRandom; String valorArregloRandom="";

            arregloRandom = user.getListRandom().toArray();//listRandom.toArray();

            while (ite.hasNext())
            {
                valorArregloRandom="";
                valorArregloRandom = (String) arregloRandom[cont];
                comparo=valor.compareTo(valorArregloRandom);

                if (comparo == 0)
                {
                    return true;
                }
                cont = cont++;
            }
            return false;
        }




        public void RandomID(Usuario user)
        {
            String valor="";
            int posicion=1;
            boolean estaNum = true;
            //boolean estaValor=false;

            while (estaNum)
            {
              valor="";
                System.out.println("\nposicion antes..: "+posicion);
             // posicion = posicion+(int)(Math.random());
               // System.out.println("posicion..: "+posicion);
              posicion=posicion*3;
                System.out.println("posicion luego de multiplicar..: "+posicion);
              valor = valor.valueOf(posicion);
               System.out.println(" m...: "+valor+"\n");

              estaNum = BuscarNumRandomList(valor,user);//devuelve true si lo ncontro
            }

            if (!estaNum)
            {
                System.out.println("\nestaNum...: "+estaNum+" ");
               // partida.setPartidaID(valor);
                System.out.println("\n valor...: "+valor+"\n");
                user.getListRandom().add(valor);//listRandom.add(valor);

            }
           //return valor;
        }
*/
 
 /*1=A; 2=B; 3=I; 4=D*/

  /*  public String ValidacionPosicionImagen(int coordImagX, int coordImagY, int valorReferencia)
    {

        if (coordImagX+1<10 && coordImagY+1<7)
        {

        }
        return;
    }

    public int VerificarPosicionLibre(int x,int posA, int posB, Usuario user)
    {
        Pieza tab[][]= user.getPartida().getTablero();

        if (tab[x][posA]!=null)
            return posA;


        return ;
    }


imagASelecPos = BuscarImagen(arregloImagen[2],userAux.getPartida());

    public String BuscarImagen(String ImagenPiezaJugador, Pieza piezaJ, Pieza piezaMaquina, boolean doble,Usuario user)
    {
        int posX=0; int posY=0; String posicionMaquina;



        posX = piezaJ.getCoordenadaX();
        posY = piezaJ.getCoordenadaY();


         for (int i = 0; i < ImagenPiezaJugador.length();i++)
         {
           if( ImagenPiezaJugador.charAt(i)=='a'||  ImagenPiezaJugador.charAt(i)=='A')
           {
                if(posY+1<7 && posY-1>0 && !doble)
                {

                    boolean lugar = false;

                    lugar= VerificarPosicionLibre(posX,posY+1, posY-1,user);

                   return piezaMaquina.getImagenA();
                }

           }
            if( ImagenPiezaJugador.charAt(i)=='b'||  ImagenPiezaJugador.charAt(i)=='B')
           {


           }
            if( ImagenPiezaJugador.charAt(i)=='i'||  ImagenPiezaJugador.charAt(i)=='I')
           {


           }
            if( ImagenPiezaJugador.charAt(i)=='d'||  ImagenPiezaJugador.charAt(i)=='D')
           {


           }

         }


        return ;
    }
*/


    public String realizarOperacion (String arg)
    {
        String resultado = "false";

        Usuario userAux = new Usuario();
        Partida parNueva = new Partida();
        int dia,mes,año,IDavatar;
        dia = mes = año = 0;

        //LisU = (ListaUsuario)LisU.getMiSet();
       // reserva.setClave(subArg[2]);
        //return realizarReserva(reserva);

        String[] subArg = arg.split(":");

        
        String datos="";

        if (arg.compareTo("salir") == 0)
        {
            guardarXML();
        }
        else
        {
            //losUsuarios=(ListaUsuario)losUsuarios.getMiSet();
            //System.out.println("SubArreglo[0]= " + subArg[0]);

            switch(Integer.parseInt(subArg[0]))
            {
                case 1:
                    boolean retorno=false;
                    //List <Usuario> Luser=new ArrayList();
                    System.out.println("\n 1.-Ingreso al sistema\n");
                    System.out.println("El mensaje enviado es " + subArg[1]);
                    System.out.println("El mensaje enviado es " + subArg[2]+"\n");

                  /*  userAux = null;
                    Luser = losUsuarios.getMiSet().toArray();
                    userAux = Luser;
*/
                  //  System.out.println("\nImpresion coleccion");
                    //ListaUsuario.getInstance().imprimirColeccion();
                    userAux = ListaUsuario.getInstance().RecorrerListaUsuario(subArg[1]);
                  
                    if (userAux != null)
                    {
                        System.out.println("nickname = "+userAux.getNickname()
                                        +"\nnombre= "+userAux.getNombre()
                                        +"\napellido= "+userAux.getApellido()
                                        +"\nclave= "+userAux.getClave());

                        retorno = verificarCuenta(subArg[1], subArg[2]);
                        if (retorno)
                        {    //return resultado = "true";
                                int cont = userAux.getContIngreso()+1;
                                userAux.setContIngreso(cont);
                                System.out.println("Contador de ingreso: "+userAux.getContIngreso());
                                datos="true";
                                datos= datos.concat(":");
                                datos=datos.concat(userAux.getNombre());
                                datos=datos.concat(":");
                                datos=datos.concat(userAux.getApellido());
                                datos = datos.concat(":");
                                datos = datos.concat(String.valueOf(userAux.getAvatar().getID()));
                              //  datos.concat(":");
                               // datos.concat(ID);
                                System.out.println("Datos en opcion1 (acceso al sistema)=> "+datos);
                                return datos;
                        }

                    }

                break;

                case 2:   //Crear Partida
                    //userAux = null;   parNueva = null;
                    inicializarPiezas();
                    MezclarPiezas();
                    cargar7Piezas(piezasJugador,todasPiezas);
                    cargar7Piezas(piezasOponente,todasPiezas);
                    System.out.println("\n2.-Crear Partida\n");
                    System.out.println("Nickname: "+subArg[1]);
                    System.out.println("Fecha de Inicio de partida: "+subArg[2]);

                   /* datos = piezasJugador.devolverListaDePiezas();
                    //System.out.println("Las piezas del jugador son: "); piezasJugador.imprimirColeccion();
                    //System.out.println("Las piezas restantes son: "); todasPiezas.imprimirColeccion();
                    //System.out.println("Lo que devuelve el servidor es: " + datos);
                    return datos;*/
                    

                    userAux=ListaUsuario.getInstance().RecorrerListaUsuario(subArg[1]);

                    if (userAux != null)
                    {

                        String fechaInicioPartida=subArg[2];
                        String [] fecIniPar = fechaInicioPartida.split("/");
                        dia = (Integer.parseInt(fecIniPar[0]));
                        mes = (Integer.parseInt(fecIniPar[1]));
                        año = (Integer.parseInt(fecIniPar[2]));
                        parNueva.agregarFechaPartidaInicial(dia, mes, año);

                        //RandomID(userAux);

                        userAux.setPartida(parNueva);
                        userAux.getPartida().setPiezaJugador(piezasJugador);

                      /*  System.out.println("piezas del jugador asignada??? ");
                        userAux.getPartida().getPiezaJugador().imprimirColeccion();
                        */
                        userAux.getPartida().setPiezaMaquina(piezasOponente);
                        userAux.getPartida().setPiezaPote(todasPiezas);
                        
                        userAux.RandomID();
                        
                        datos= userAux.getPartida().getPiezaJugador().devolverListaDePiezas();
                           // datos = piezasJugador.devolverListaDePiezas();
                        System.out.println("Las piezas del jugador son: "+datos); //piezasJugador.imprimirColeccion();
                     //   System.out.println("\nLas piezas del oponente son: \n"); userAux.getPartida().getPiezaMaquina().imprimirColeccion();//piezasOponente.imprimirColeccion();
                        //System.out.println("\nLas piezas del pote son: \n"); userAux.getPartida().getPiezaPote().imprimirColeccion();//todasPiezas.imprimirColeccion();
                        return datos;
                    }

                break;

                case 3:
                    System.out.println("\n 3.-Registro en el sistema\n");
                    System.out.println("El mensaje enviado es (nick) " + subArg[1]);
                    System.out.println("El mensaje enviado es (clave) " + subArg[2]);
                    System.out.println("El mensaje enviado es (nombre) " + subArg[3]);
                    System.out.println("El mensaje enviado es (apellido) " + subArg[4]);
                    System.out.println("El mensaje enviado es (fechaNacimiento) " + subArg[5]);
                    System.out.println("El mensaje enviado es (IDAvatar) " + subArg[6]);

                    boolean valor;  int i=0;
                    String fechaNac ="";
                    fechaNac = subArg[5];
                    Avatar auxAv = new Avatar();
                    auxAv.setID(Integer.parseInt(subArg[6]));

                    String[] subArgFecha = fechaNac.split("/");
                    dia = (Integer.parseInt(subArgFecha[0]));
                    mes = (Integer.parseInt(subArgFecha[1]));
                    año = (Integer.parseInt(subArgFecha[2]));
                    IDavatar = Integer.parseInt(subArg[6]);

                    System.out.println("dia:"+dia+" mes:"+mes+" año:"+año);

                    userAux = new Usuario(subArg[1],subArg[2],subArg[3],subArg[4],dia,mes,año,auxAv);

                    valor = verificarNick(userAux);//retorno true = lo encontro

                    if (valor == false)
                    {
                        int cont=userAux.getContIngreso()+1;
                        userAux.setContIngreso(cont);
                        System.out.println("Cont ingreso en registro...: "+userAux.getContIngreso());
                        ListaUsuario.getInstance().agregarElemento(userAux);
                        System.out.println("\n\nImpresion de la coleccion en registro usuario\n");
                        ListaUsuario.getInstance().imprimirColeccion();
                       return resultado = "true";
                    }
                    else
                    {
                        System.out.println("El elemento esta repetido...");
                       // return resultado = "false";
                    }

                   // resultado = "mensaje de despedida recibido";
                break;

                case 4:
                    System.out.println("\n 4.-Guardar Partida \n");
                    System.out.println("nickname en guardar partida " + subArg[1]);

                    



                   // resultado = "mensaje de despedida recibido";
                break;

                case 5:
                    System.out.println("\n 5.-Enviar Jugada\n");
                    System.out.println("nickname en enviar jugada " + subArg[1]);
                    System.out.println("ficha jugada " + subArg[2]);
                    
                    String ficha = subArg[2];   String [] arregloFicha = ficha.split("-");
                    //boolean nulo=false;

                if (arregloFicha[0].compareTo("null")==0 || arregloFicha[0].compareTo("NULL")==0 || arregloFicha[1].compareTo("null")==0 || arregloFicha[1].compareTo("NULL")==0)
                {
                    System.out.println("\nEL jugador pasooooooooooo");// ok, a optimizar el codigo para no llamar tanto
                    //falta aqui llamar a q juegue la maquina
                    boolean eliminado = false;
                    Pieza piezaOpo = new Pieza();
                    userAux=ListaUsuario.getInstance().RecorrerListaUsuario(subArg[1]);
                    piezaOpo = userAux.getPartida().getPiezaMaquina().BuscarPiezaOponente(userAux.getPartida().getPiezaMaquina(),userAux.getPartida().getCabezaCola().getCabeza(),userAux.getPartida().getCabezaCola().getCola());

                             if (piezaOpo != null)
                             {
                                   System.out.println("Valor Superior Oponente(else)= "+piezaOpo.getValSuperior()+
                                         "\nValor Inferior Oponente= "+piezaOpo.getValInferior());
                               // String devuelto = userAux.getPartida().getCabezaCola().PosFichaOponete(userAux.getPartida().getCabezaCola().getCoordenadaXcabeza(),userAux.getPartida().getCabezaCola().getCoordenadaYcabeza(),userAux);

                                // String devuelto = userAux.getPartida().getCabezaCola().PosicionFichaDelOponente(userAux,pieza,piezaOpo);
                                 String devuelto = userAux.getPartida().getCabezaCola().PosFichaOponenteCabezaCola(userAux, piezaOpo);
                                 System.out.println("\nDevuelto en el else(5)====  "+devuelto);
                                //el buscar le tengo que cambiar los parametros para que verifique en cuanto a la cabeza y cola que le pase
                              //asi que debo de comparar e insertar de otra manera...

                                 //String imagASelecPos="";
                                /// imagASelecPos = BuscarImagen(arregloImagen[2],userAux.getPartida());
                                 if (devuelto.compareTo("false") == 0)
                                 {
                                     System.out.println("\nNo hay posicion disponible!! la enchavastes!!!");//resultado="false";

                                 }
                                 else
                                 {
                                     String [] completo = devuelto.split(":");System.out.println("\n(CServer) completo[1] en el else= "+completo[1]);
                                     String [] pos = completo[0].split("-");
                                     piezaOpo.setCoordenadaX(Integer.parseInt(pos[0]));
                                     piezaOpo.setCoordenadaY(Integer.parseInt(pos[1]));

                                     userAux.getPartida().getCabezaCola().CambioCoordenadaCabezaCola(userAux, piezaOpo);//Aqui cambio las coordenadas

                                     //Impresion de lo que tengo en cabezaCola
                                     System.out.println(userAux.getPartida().getCabezaCola().toString());

                                     resultado="";
                                     resultado = RetornoEnvioJugadaMaquina(piezaOpo.getValSuperior(),piezaOpo.getValInferior(),piezaOpo.getCoordenadaX(),piezaOpo.getCoordenadaY(),piezaOpo.getImagenA(),piezaOpo.getImagenB(),piezaOpo.getImagenI(),piezaOpo.getImagenD(),completo[1]/*piezaOpo.getImagenA()*/,piezaOpo.getID());

                                     eliminado = userAux.getPartida().getPiezaMaquina().removerElementoImagenAsociada(userAux.getPartida().getPiezaMaquina(),piezaOpo.getImagenA());
                                     System.out.println("(else)  eliminado??? "+eliminado);
                                     System.out.println("Lista de fichas del oponente luego de remover la ficha= "+piezaOpo.getValSuperior()+"-"+piezaOpo.getValInferior());
                                     userAux.getPartida().getPiezaMaquina().imprimirColeccion();



                                        if(userAux.getPartida().InsercionPiezaTablero(piezaOpo, userAux))
                                        {
                                            System.out.println("(else) Ingreso la ficha de la maquina???\n");
                                            userAux.getPartida().ImprimirTablero();
                                        }
                                        else
                                            System.out.println("(else) NO se pudo insertar la ficha de la maquina en el tablero\n");

                                 }//Fin del else devuelto de la posicion de la ficha != false
                            }
                            else// Tomar del pote de para la maquina para jugador q paso
                            {
                                   Pieza piezaDelPotote  = null;
                                   piezaDelPotote = envioDelPote(userAux.getPartida().getPiezaPote());
                                    System.out.println("\n(3)Pieza del pote para la maquina = "+piezaDelPotote.getValSuperior()+"-"+piezaDelPotote.getValInferior());
                                   if (piezaDelPotote != null)
                                   {
                                       piezaOpo = null;

                                       userAux.getPartida().getPiezaMaquina().agregarElemento(piezaDelPotote);
                                       piezaOpo = userAux.getPartida().getPiezaMaquina().BuscarPiezaOponente(userAux.getPartida().getPiezaMaquina(),userAux.getPartida().getCabezaCola().getCabeza(),userAux.getPartida().getCabezaCola().getCola());

                                         if (piezaOpo != null)
                                         {
                                               System.out.println("(Pote3)Valor Superior Oponente (else)= "+piezaOpo.getValSuperior()+
                                                     "\nValor Inferior Oponente= "+piezaOpo.getValInferior());

                                             String devuelto = userAux.getPartida().getCabezaCola().PosFichaOponenteCabezaCola(userAux, piezaOpo);
                                             System.out.println("\nDevuelto en el else(5)====  "+devuelto);

                                             if (devuelto.compareTo("false") == 0)
                                             {
                                                 System.out.println("\nNo hay posicion disponible!! la enchavastes!!!");//resultado="false";

                                             }
                                             else
                                             {
                                                 String [] completo = devuelto.split(":");//Imagen correcta
                                                 System.out.println("\n(CServer) completo[1] en el else= "+completo[1]);
                                                 String [] pos = completo[0].split("-");
                                                 piezaOpo.setCoordenadaX(Integer.parseInt(pos[0]));
                                                 piezaOpo.setCoordenadaY(Integer.parseInt(pos[1]));

                                                 userAux.getPartida().getCabezaCola().CambioCoordenadaCabezaCola(userAux, piezaOpo);//Aqui cambio las coordenadas

                                                 //Impresion de lo que tengo en cabezaCola
                                                 System.out.println(userAux.getPartida().getCabezaCola().toString());

                                                 resultado="";
                                                 resultado = RetornoEnvioJugadaMaquina(piezaOpo.getValSuperior(),piezaOpo.getValInferior(),piezaOpo.getCoordenadaX(),piezaOpo.getCoordenadaY(),piezaOpo.getImagenA(),piezaOpo.getImagenB(),piezaOpo.getImagenI(),piezaOpo.getImagenD(),completo[1]/*piezaOpo.getImagenA()*/,piezaOpo.getID());

                                                 eliminado = userAux.getPartida().getPiezaMaquina().removerElementoImagenAsociada(userAux.getPartida().getPiezaMaquina(),piezaOpo.getImagenA());
                                                 System.out.println("(else)  eliminado??? "+eliminado);
                                                 System.out.println("Lista de fichas del oponente luego de remover la ficha= "+piezaOpo.getValSuperior()+"-"+piezaOpo.getValInferior());
                                                 userAux.getPartida().getPiezaMaquina().imprimirColeccion();

                                                    if(userAux.getPartida().InsercionPiezaTablero(piezaOpo, userAux))
                                                    {
                                                        System.out.println("(else) Ingreso la ficha de la maquina???\n");
                                                        userAux.getPartida().ImprimirTablero();
                                                    }
                                                    else
                                                        System.out.println("(else) NO se pudo insertar la ficha de la maquina en el tablero\n");
                                             }
                                       }
                                       else
                                       {
                                            System.out.println("\nPaso la maquina.. ");
                                            resultado = "false";
                                       }


                                   }
                                   else
                                   {
                                         System.out.println("\nNo tengo ficha de la maquina.. ");
                                         resultado = "false";
                                   }

                            }//FIN DEL ELSE PARA TOMAR DEL POTE DE LA MAQUINA
                 }
                 else
                {
                    if (arregloFicha[0].compareTo("null")!=0 || arregloFicha[0].compareTo("NULL")!=0 || arregloFicha[1].compareTo("null")!=0 || arregloFicha[1].compareTo("NULL")!=0)
                    {
                        //nulo = false;
                        System.out.println("posicion de la ficha " + subArg[3]);
                        System.out.println("imagen seleccionada " + subArg[4]);

                        String posF = subArg[3];

                        String imagenSelec = subArg[4];
                        String [] arregloImagen = subArg[4].split("/"); //System.out.println("\narregloIm[2] "+arregloImagen[2]);

                        String [] arregloPos = posF.split("-");

                        int valorSup,valorInf,posX,posY;valorSup=valorInf=posX=posY=0;

                       /*valorSup=Integer.parseInt(arregloFicha[0]);System.out.println("\nValrSup: "+valorSup);
                        valorInf=Integer.parseInt(arregloFicha[1]);System.out.println("ValrInf: "+valorInf);*/
                        posX=Integer.parseInt(arregloPos[0]);System.out.println("\nPosX: "+posX);
                        posY=Integer.parseInt(arregloPos[1]);System.out.println("PosY: "+posY);
                        

                        Pieza pieza=null;
                        Pieza piezaOpo = new Pieza();
                        boolean eliminado=false; boolean insertado=false;
                        userAux=null; Partida parAux=new Partida();
                        userAux=ListaUsuario.getInstance().RecorrerListaUsuario(subArg[1]);

                        //Busco la pieza del jugador por la imagen seleccionada 
                        pieza = userAux.getPartida().getPiezaJugador().BuscarPiezaImagenAsociada(userAux.getPartida().getPiezaJugador(), arregloImagen[2]);
                        if (pieza == null)
                            System.out.println("************************************************La pieza es null y por eso no podemos seguir jugando......");
                        pieza.setCoordenadaX(posX);
                        pieza.setCoordenadaY(posY);
                        pieza.setImagenAsociadaActual(arregloImagen[2]);
                        //Pieza tab[][] = userAux.getPartida().getTablero();

                        insertado = userAux.getPartida().InsercionPiezaTablero(pieza, userAux);
            //                     System.out.println("(case 5)Imagen de la pieza= " + PosicionFichaDelOponente(userAux, pieza));
                        if (insertado)
                        {
                            int cabeza=0; int cola=0;
                            cabeza = userAux.getPartida().getCabezaCola().getCabeza();
                            cola = userAux.getPartida().getCabezaCola().getCola();

                            if ((cabeza ==-1) && (cola == -1))
                            {
                                InicioDeLaCabezaCola (pieza,userAux);

                                 System.out.println("\nFicha del oponente ");
                                 piezaOpo = userAux.getPartida().getPiezaMaquina().BuscarPiezaOponente(userAux.getPartida().getPiezaMaquina(),userAux.getPartida().getCabezaCola().getCabeza(),userAux.getPartida().getCabezaCola().getCola());

                                  if (piezaOpo != null)
                                  {
                                     System.out.println("Valor Superior Oponente= "+piezaOpo.getValSuperior()+
                                             "\nValor Inferior Oponente= "+piezaOpo.getValInferior());

                                     // public String PosFichaOponenteCabezaCola(Usuario user, Pieza piezaOponente)
                                     String devuelto = userAux.getPartida().getCabezaCola().PosFichaOponenteCabezaCola(userAux, piezaOpo);
                                             //userAux.getPartida().getCabezaCola().PosFichaOponete(userAux.getPartida().getCabezaCola().getCoordenadaXcabeza(),userAux.getPartida().getCabezaCola().getCoordenadaYcabeza(),userAux);

                                     System.out.println("\n(5) Devuelto posicion de la ficha maquina=  "+devuelto);

                                     if (devuelto.compareTo("false") == 0)
                                     {
                                         System.out.println("\nNo hay posicion disponible!! la enchavastes!!!");//resultado="false";

                                     }
                                     else
                                     {
                                         String [] completo = devuelto.split(":");System.out.println("\n(CServer) completo[1]= "+completo[1]);
                                         String [] pos = completo[0].split("-");
                                         piezaOpo.setCoordenadaX(Integer.parseInt(pos[0]));//Coloco las coordenadas de la ficha del oponente
                                         piezaOpo.setCoordenadaY(Integer.parseInt(pos[1]));

                                         /*POSICION DE LOS LADOS... SOLO TIENE DOS OPCIONES*/

                                         userAux.getPartida().getCabezaCola().CambioCoordenadaCabezaCola(userAux, piezaOpo);//Aqui cambio las coordenadas de cabeza o cola

                                         System.out.println(userAux.getPartida().getCabezaCola().toString());//Impresion de lo que tengo en cabezaCola

                                         resultado="";//AHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
                                         resultado = RetornoEnvioJugadaMaquina(piezaOpo.getValSuperior(),piezaOpo.getValInferior(),piezaOpo.getCoordenadaX(),piezaOpo.getCoordenadaY(),piezaOpo.getImagenA(),piezaOpo.getImagenB(),piezaOpo.getImagenI(),piezaOpo.getImagenD(),completo[1]/*piezaOpo.getImagenA()*/,piezaOpo.getID());

                                         eliminado = userAux.getPartida().getPiezaJugador().removerElementoImagenAsociada(userAux.getPartida().getPiezaJugador(),arregloImagen[2]);
                                         System.out.println("eliminado??? "+eliminado);
                                         System.out.println("Lista de fichas del jugador luego de remover la ficha= "+subArg[2]);
                                         userAux.getPartida().getPiezaJugador().imprimirColeccion();

                                         eliminado = userAux.getPartida().getPiezaMaquina().removerElementoImagenAsociada(userAux.getPartida().getPiezaMaquina(),piezaOpo.getImagenA());
                                         System.out.println("eliminado??? "+eliminado);
                                         System.out.println("Lista de fichas del oponente luego de remover la ficha= "+piezaOpo.getValSuperior()+"-"+piezaOpo.getValInferior());
                                         userAux.getPartida().getPiezaMaquina().imprimirColeccion();



                                            if(userAux.getPartida().InsercionPiezaTablero(piezaOpo, userAux))
                                            {
                                                System.out.println("Ingreso la ficha de la maquina???\n");
                                                userAux.getPartida().ImprimirTablero();
                                            }
                                            else
                                                System.out.println("NO se pudo insertar la ficha de la maquina en el tablero\n");
                                     }

                                  }
                                  else// Tomar del pote de para la maquina
                                    {
                                           Pieza piezaDelPotote  = null;
                                           piezaDelPotote = envioDelPote(userAux.getPartida().getPiezaPote());
                                            System.out.println("\n(1)Pieza del pote para la maquina = "+piezaDelPotote.getValSuperior()+"-"+piezaDelPotote.getValInferior());
                                           if (piezaDelPotote != null)
                                           {
                                               piezaOpo = null;

                                               System.out.println("¿\nSe agrego el de tomar del pote la maquina? "+userAux.getPartida().getPiezaMaquina().agregarElemento(piezaDelPotote));//userAux.getPartida().getPiezaMaquina().agregarElemento(piezaDelPotote);
                                               piezaOpo = userAux.getPartida().getPiezaMaquina().BuscarPiezaOponente(userAux.getPartida().getPiezaMaquina(),userAux.getPartida().getCabezaCola().getCabeza(),userAux.getPartida().getCabezaCola().getCola());

                                                 if (piezaOpo != null)
                                                 {
                                                       System.out.println("(Pote1)Valor Superior Oponente (else)= "+piezaOpo.getValSuperior()+
                                                             "\nValor Inferior Oponente= "+piezaOpo.getValInferior());

                                                     String devuelto = userAux.getPartida().getCabezaCola().PosFichaOponenteCabezaCola(userAux, piezaOpo);
                                                     System.out.println("\nDevuelto en el else(5)====  "+devuelto);

                                                     if (devuelto.compareTo("false") == 0)
                                                     {
                                                         System.out.println("\nNo hay posicion disponible!! la enchavastes!!!");//resultado="false";

                                                     }
                                                     else
                                                     {
                                                         String [] completo = devuelto.split(":");//Imagen correcta
                                                         System.out.println("\n(CServer) completo[1] en el else= "+completo[1]);
                                                         String [] pos = completo[0].split("-");
                                                         piezaOpo.setCoordenadaX(Integer.parseInt(pos[0]));
                                                         piezaOpo.setCoordenadaY(Integer.parseInt(pos[1]));

                                                         userAux.getPartida().getCabezaCola().CambioCoordenadaCabezaCola(userAux, piezaOpo);//Aqui cambio las coordenadas

                                                         //Impresion de lo que tengo en cabezaCola
                                                         System.out.println(userAux.getPartida().getCabezaCola().toString());

                                                         resultado="";
                                                         resultado = RetornoEnvioJugadaMaquina(piezaOpo.getValSuperior(),piezaOpo.getValInferior(),piezaOpo.getCoordenadaX(),piezaOpo.getCoordenadaY(),piezaOpo.getImagenA(),piezaOpo.getImagenB(),piezaOpo.getImagenI(),piezaOpo.getImagenD(),completo[1]/*piezaOpo.getImagenA()*/,piezaOpo.getID());

                                                         eliminado = userAux.getPartida().getPiezaJugador().removerElementoImagenAsociada(userAux.getPartida().getPiezaJugador(),arregloImagen[2]);
                                                         System.out.println("eliminado??? "+eliminado);
                                                         System.out.println("Lista de fichas del jugador luego de remover la ficha= "+subArg[2]);
                                                         userAux.getPartida().getPiezaJugador().imprimirColeccion();


                                                         eliminado = userAux.getPartida().getPiezaMaquina().removerElementoImagenAsociada(userAux.getPartida().getPiezaMaquina(),piezaOpo.getImagenA());
                                                         System.out.println("(else)  eliminado??? "+eliminado);
                                                         System.out.println("Lista de fichas del oponente luego de remover la ficha= "+piezaOpo.getValSuperior()+"-"+piezaOpo.getValInferior());
                                                         userAux.getPartida().getPiezaMaquina().imprimirColeccion();

                                                            if(userAux.getPartida().InsercionPiezaTablero(piezaOpo, userAux))
                                                            {
                                                                System.out.println("(else) Ingreso la ficha de la maquina???\n");
                                                                userAux.getPartida().ImprimirTablero();
                                                            }
                                                            else
                                                                System.out.println("(else) NO se pudo insertar la ficha de la maquina en el tablero\n");

                                                     }
                                               }
                                               else//DEspues de haber tomado del pote y aun no encuentra ficha y pasa
                                               {
                                                   resultado = "false";
                                               }


                                           }
                                           else//No hay mas fichas del pote y pasa la maquina
                                           {
                                                 System.out.println("\nNo tengo ficha de la maquina.. ");
                                                 resultado = "false";
                                           }

                                    }//FIN DEL ELSE PARA TOMAR DEL POTE DE LA MAQUINA

                             }
                             else//eLSE DE LA CABEZA && COLA == -1
                             {

                                System.out.println("\nFicha del oponente en el else!!!!!!!!!!!!!!!!! ");
                                userAux.getPartida().getCabezaCola().CambioCoordenadaCabezaCola(userAux, pieza);
                                piezaOpo = null;
                                piezaOpo = userAux.getPartida().getPiezaMaquina().BuscarPiezaOponente(userAux.getPartida().getPiezaMaquina(),userAux.getPartida().getCabezaCola().getCabeza(),userAux.getPartida().getCabezaCola().getCola());

                                 if (piezaOpo != null)
                                 {
                                       System.out.println("Valor Superior Oponente(else)= "+piezaOpo.getValSuperior()+
                                             "\nValor Inferior Oponente= "+piezaOpo.getValInferior());
                                   // String devuelto = userAux.getPartida().getCabezaCola().PosFichaOponete(userAux.getPartida().getCabezaCola().getCoordenadaXcabeza(),userAux.getPartida().getCabezaCola().getCoordenadaYcabeza(),userAux);

                                    // String devuelto = userAux.getPartida().getCabezaCola().PosicionFichaDelOponente(userAux,pieza,piezaOpo);
                                     String devuelto = userAux.getPartida().getCabezaCola().PosFichaOponenteCabezaCola(userAux, piezaOpo);
                                     System.out.println("\nDevuelto en el else(5)====  "+devuelto);
                                    //el buscar le tengo que cambiar los parametros para que verifique en cuanto a la cabeza y cola que le pase
                                  //asi que debo de comparar e insertar de otra manera...

                                     //String imagASelecPos="";
                                    /// imagASelecPos = BuscarImagen(arregloImagen[2],userAux.getPartida());
                                     if (devuelto.compareTo("false") == 0)
                                     {
                                         System.out.println("\nNo hay posicion disponible!! la enchavastes!!!");//resultado="false";

                                     }
                                     else
                                     {
                                         String [] completo = devuelto.split(":");
                                         System.out.println("\n(CServer) completo[1] en el else= "+completo[1]);//Imagen "Correcta" de la ficha de la maquina
                                         String [] pos = completo[0].split("-");
                                         piezaOpo.setCoordenadaX(Integer.parseInt(pos[0]));
                                         piezaOpo.setCoordenadaY(Integer.parseInt(pos[1]));

                                         userAux.getPartida().getCabezaCola().CambioCoordenadaCabezaCola(userAux, piezaOpo);//Aqui cambio las coordenadas

                                         //Impresion de lo que tengo en cabezaCola
                                         System.out.println(userAux.getPartida().getCabezaCola().toString());

                                         resultado="";
                                         resultado = RetornoEnvioJugadaMaquina(piezaOpo.getValSuperior(),piezaOpo.getValInferior(),piezaOpo.getCoordenadaX(),piezaOpo.getCoordenadaY(),piezaOpo.getImagenA(),piezaOpo.getImagenB(),piezaOpo.getImagenI(),piezaOpo.getImagenD(),completo[1]/*piezaOpo.getImagenA()*/,piezaOpo.getID());

                                         eliminado = userAux.getPartida().getPiezaJugador().removerElementoImagenAsociada(userAux.getPartida().getPiezaJugador(),arregloImagen[2]);
                                         System.out.println("(else) eliminado??? "+eliminado);
                                         System.out.println("Lista de fichas del jugador luego de remover la ficha= "+subArg[2]);
                                         userAux.getPartida().getPiezaJugador().imprimirColeccion();

                                         eliminado = userAux.getPartida().getPiezaMaquina().removerElementoImagenAsociada(userAux.getPartida().getPiezaMaquina(),piezaOpo.getImagenA());
                                         System.out.println("(else)  eliminado??? "+eliminado);
                                         System.out.println("Lista de fichas del oponente luego de remover la ficha= "+piezaOpo.getValSuperior()+"-"+piezaOpo.getValInferior());
                                         userAux.getPartida().getPiezaMaquina().imprimirColeccion();



                                            if(userAux.getPartida().InsercionPiezaTablero(piezaOpo, userAux))
                                            {
                                                System.out.println("(else) Ingreso la ficha de la maquina???\n");
                                                userAux.getPartida().ImprimirTablero();
                                            }
                                            else
                                                System.out.println("(else) NO se pudo insertar la ficha de la maquina en el tablero\n");

                                     }//Fin del else devuelto de la posicion de la ficha != false
                                }
                                else// Tomar del pote de para la maquina
                                {

                                       Pieza piezaDelPotote  = null;
                                       piezaDelPotote = envioDelPote(userAux.getPartida().getPiezaPote());
                                       System.out.println("\n(2)Pieza del pote para la maquina = "+piezaDelPotote.getValSuperior()+"-"+piezaDelPotote.getValInferior());
                                       if (piezaDelPotote != null)
                                       {
                                           piezaOpo = null;
                                           
                                           userAux.getPartida().getPiezaMaquina().agregarElemento(piezaDelPotote);
                                           piezaOpo = userAux.getPartida().getPiezaMaquina().BuscarPiezaOponente(userAux.getPartida().getPiezaMaquina(),userAux.getPartida().getCabezaCola().getCabeza(),userAux.getPartida().getCabezaCola().getCola());

                                             if (piezaOpo != null)
                                             {
                                                   System.out.println("(Pote2)Valor Superior Oponente (else)= "+piezaOpo.getValSuperior()+
                                                         "\nValor Inferior Oponente= "+piezaOpo.getValInferior());

                                                 String devuelto = userAux.getPartida().getCabezaCola().PosFichaOponenteCabezaCola(userAux, piezaOpo);
                                                 System.out.println("\nDevuelto en el else(5)====  "+devuelto);
                                             
                                                 if (devuelto.compareTo("false") == 0)
                                                 {
                                                     System.out.println("\nNo hay posicion disponible!! la enchavastes!!!");//resultado="false";

                                                 }
                                                 else
                                                 {
                                                     String [] completo = devuelto.split(":");//Imagen correcta
                                                     System.out.println("\n(CServer) completo[1] en el else= "+completo[1]);
                                                     String [] pos = completo[0].split("-");
                                                     piezaOpo.setCoordenadaX(Integer.parseInt(pos[0]));
                                                     piezaOpo.setCoordenadaY(Integer.parseInt(pos[1]));

                                                     userAux.getPartida().getCabezaCola().CambioCoordenadaCabezaCola(userAux, piezaOpo);//Aqui cambio las coordenadas

                                                     //Impresion de lo que tengo en cabezaCola
                                                     System.out.println(userAux.getPartida().getCabezaCola().toString());

                                                     resultado="";
                                                     resultado = RetornoEnvioJugadaMaquina(piezaOpo.getValSuperior(),piezaOpo.getValInferior(),piezaOpo.getCoordenadaX(),piezaOpo.getCoordenadaY(),piezaOpo.getImagenA(),piezaOpo.getImagenB(),piezaOpo.getImagenI(),piezaOpo.getImagenD(),completo[1]/*piezaOpo.getImagenA()*/,piezaOpo.getID());

                                                     eliminado = userAux.getPartida().getPiezaJugador().removerElementoImagenAsociada(userAux.getPartida().getPiezaJugador(),arregloImagen[2]);
                                                     System.out.println("(else) eliminado??? "+eliminado);
                                                     System.out.println("Lista de fichas del jugador luego de remover la ficha= "+subArg[2]);
                                                     userAux.getPartida().getPiezaJugador().imprimirColeccion();

                                                     eliminado = userAux.getPartida().getPiezaMaquina().removerElementoImagenAsociada(userAux.getPartida().getPiezaMaquina(),piezaOpo.getImagenA());
                                                     System.out.println("(else)  eliminado??? "+eliminado);
                                                     System.out.println("Lista de fichas del oponente luego de remover la ficha= "+piezaOpo.getValSuperior()+"-"+piezaOpo.getValInferior());
                                                     userAux.getPartida().getPiezaMaquina().imprimirColeccion();

                                                        if(userAux.getPartida().InsercionPiezaTablero(piezaOpo, userAux))
                                                        {
                                                            System.out.println("(else) Ingreso la ficha de la maquina???\n");
                                                            userAux.getPartida().ImprimirTablero();
                                                        }
                                                        else
                                                            System.out.println("(else) NO se pudo insertar la ficha de la maquina en el tablero\n");
                                                 }
                                           }
                                           else
                                           {
                                                System.out.println("\nNo hay pieza de la maquina luego de tomar del pote");
                                                resultado = "false";
                                           }

                                       }
                                       else
                                       {
                                             System.out.println("\nNo tengo ficha del pote para la maquina.. ");
                                             resultado = "false";
                                       }

                                }//FIN DEL ELSE PARA TOMAR DEL POTE DE LA MAQUINA
                             }//FIN DEL ELSE cabezaq,cola != -1
                        }//fin del if INSERTADO
                        else
                        {
                            System.out.println("\nREVISAR, no se pudo insertar la ficha del jugador en el tablero");
                        }
                     }//FIN  DEL NULO
                     /*else
                     {
                        if (arregloFicha[0].compareTo("null")==0)
                        {
                            System.out.println("\nEL jugador pasooooooooooo");// ok, a optimizar el codigo para no llamar tanto
                            //falta aqui llamar a q juegue la maquina
                            boolean eliminado = false;
                            Pieza piezaOpo = new Pieza();
                            userAux=ListaUsuario.getInstance().RecorrerListaUsuario(subArg[1]);
                            piezaOpo = userAux.getPartida().getPiezaMaquina().BuscarPiezaOponente(userAux.getPartida().getPiezaMaquina(),userAux.getPartida().getCabezaCola().getCabeza(),userAux.getPartida().getCabezaCola().getCola());

                                     if (piezaOpo != null)
                                     {
                                           System.out.println("Valor Superior Oponente(else)= "+piezaOpo.getValSuperior()+
                                                 "\nValor Inferior Oponente= "+piezaOpo.getValInferior());
                                       // String devuelto = userAux.getPartida().getCabezaCola().PosFichaOponete(userAux.getPartida().getCabezaCola().getCoordenadaXcabeza(),userAux.getPartida().getCabezaCola().getCoordenadaYcabeza(),userAux);

                                        // String devuelto = userAux.getPartida().getCabezaCola().PosicionFichaDelOponente(userAux,pieza,piezaOpo);
                                         String devuelto = userAux.getPartida().getCabezaCola().PosFichaOponenteCabezaCola(userAux, piezaOpo);
                                         System.out.println("\nDevuelto en el else(5)====  "+devuelto);
                                        //el buscar le tengo que cambiar los parametros para que verifique en cuanto a la cabeza y cola que le pase
                                      //asi que debo de comparar e insertar de otra manera...

                                         //String imagASelecPos="";
                                        /// imagASelecPos = BuscarImagen(arregloImagen[2],userAux.getPartida());
                                         if (devuelto.compareTo("false") == 0)
                                         {
                                             System.out.println("\nNo hay posicion disponible!! la enchavastes!!!");//resultado="false";

                                         }
                                         else
                                         {
                                             String [] completo = devuelto.split(":");System.out.println("\n(CServer) completo[1] en el else= "+completo[1]);
                                             String [] pos = completo[0].split("-");
                                             piezaOpo.setCoordenadaX(Integer.parseInt(pos[0]));
                                             piezaOpo.setCoordenadaY(Integer.parseInt(pos[1]));

                                             userAux.getPartida().getCabezaCola().CambioCoordenadaCabezaCola(userAux, piezaOpo);//Aqui cambio las coordenadas

                                             //Impresion de lo que tengo en cabezaCola
                                             System.out.println(userAux.getPartida().getCabezaCola().toString());

                                             resultado="";
                                             resultado = RetornoEnvioJugadaMaquina(piezaOpo.getValSuperior(),piezaOpo.getValInferior(),piezaOpo.getCoordenadaX(),piezaOpo.getCoordenadaY(),piezaOpo.getImagenA(),piezaOpo.getImagenB(),piezaOpo.getImagenI(),piezaOpo.getImagenD(),completo[1],piezaOpo.getID());

                                             eliminado = userAux.getPartida().getPiezaMaquina().removerElementoImagenAsociada(userAux.getPartida().getPiezaMaquina(),piezaOpo.getImagenA());
                                             System.out.println("(else)  eliminado??? "+eliminado);
                                             System.out.println("Lista de fichas del oponente luego de remover la ficha= "+piezaOpo.getValSuperior()+"-"+piezaOpo.getValInferior());
                                             userAux.getPartida().getPiezaMaquina().imprimirColeccion();



                                                if(userAux.getPartida().InsercionPiezaTablero(piezaOpo, userAux))
                                                {
                                                    System.out.println("(else) Ingreso la ficha de la maquina???\n");
                                                    userAux.getPartida().ImprimirTablero();
                                                }
                                                else
                                                    System.out.println("(else) NO se pudo insertar la ficha de la maquina en el tablero\n");

                                         }//Fin del else devuelto de la posicion de la ficha != false
                                    }
                                    else// Tomar del pote de para la maquina para jugador q paso
                                    {
                                           Pieza piezaDelPotote  = null;
                                           piezaDelPotote = envioDelPote(userAux.getPartida().getPiezaPote());
                                            System.out.println("\n(3)Pieza del pote para la maquina = "+piezaDelPotote.getValSuperior()+"-"+piezaDelPotote.getValInferior());
                                           if (piezaDelPotote != null)
                                           {
                                               piezaOpo = null;

                                               userAux.getPartida().getPiezaMaquina().agregarElemento(piezaDelPotote);
                                               piezaOpo = userAux.getPartida().getPiezaMaquina().BuscarPiezaOponente(userAux.getPartida().getPiezaMaquina(),userAux.getPartida().getCabezaCola().getCabeza(),userAux.getPartida().getCabezaCola().getCola());

                                                 if (piezaOpo != null)
                                                 {
                                                       System.out.println("(Pote3)Valor Superior Oponente (else)= "+piezaOpo.getValSuperior()+
                                                             "\nValor Inferior Oponente= "+piezaOpo.getValInferior());

                                                     String devuelto = userAux.getPartida().getCabezaCola().PosFichaOponenteCabezaCola(userAux, piezaOpo);
                                                     System.out.println("\nDevuelto en el else(5)====  "+devuelto);

                                                     if (devuelto.compareTo("false") == 0)
                                                     {
                                                         System.out.println("\nNo hay posicion disponible!! la enchavastes!!!");//resultado="false";

                                                     }
                                                     else
                                                     {
                                                         String [] completo = devuelto.split(":");//Imagen correcta
                                                         System.out.println("\n(CServer) completo[1] en el else= "+completo[1]);
                                                         String [] pos = completo[0].split("-");
                                                         piezaOpo.setCoordenadaX(Integer.parseInt(pos[0]));
                                                         piezaOpo.setCoordenadaY(Integer.parseInt(pos[1]));

                                                         userAux.getPartida().getCabezaCola().CambioCoordenadaCabezaCola(userAux, piezaOpo);//Aqui cambio las coordenadas

                                                         //Impresion de lo que tengo en cabezaCola
                                                         System.out.println(userAux.getPartida().getCabezaCola().toString());

                                                         resultado="";
                                                         resultado = RetornoEnvioJugadaMaquina(piezaOpo.getValSuperior(),piezaOpo.getValInferior(),piezaOpo.getCoordenadaX(),piezaOpo.getCoordenadaY(),piezaOpo.getImagenA(),piezaOpo.getImagenB(),piezaOpo.getImagenI(),piezaOpo.getImagenD(),completo[1],piezaOpo.getID());

                                                         eliminado = userAux.getPartida().getPiezaMaquina().removerElementoImagenAsociada(userAux.getPartida().getPiezaMaquina(),piezaOpo.getImagenA());
                                                         System.out.println("(else)  eliminado??? "+eliminado);
                                                         System.out.println("Lista de fichas del oponente luego de remover la ficha= "+piezaOpo.getValSuperior()+"-"+piezaOpo.getValInferior());
                                                         userAux.getPartida().getPiezaMaquina().imprimirColeccion();

                                                            if(userAux.getPartida().InsercionPiezaTablero(piezaOpo, userAux))
                                                            {
                                                                System.out.println("(else) Ingreso la ficha de la maquina???\n");
                                                                userAux.getPartida().ImprimirTablero();
                                                            }
                                                            else
                                                                System.out.println("(else) NO se pudo insertar la ficha de la maquina en el tablero\n");
                                                     }
                                               }
                                               else
                                               {
                                                    System.out.println("\nPaso la maquina.. ");
                                                    resultado = "false";
                                               }


                                           }
                                           else
                                           {
                                                 System.out.println("\nNo tengo ficha de la maquina.. ");
                                                 resultado = "false";
                                           }

                                    }//FIN DEL ELSE PARA TOMAR DEL POTE DE LA MAQUINA
                         }

                    }*/
                    }
                    //resultado = "mensaje de despedida recibido";
                break;

                case 6:
                    System.out.println("\n 6.-Fin de la Partida\n");
                    System.out.println("El mensaje de despedida es " + subArg[1]);
                    //resultado = "mensaje de despedida recibido";
                break;

                case 7:
                    Pieza piezaDelPotote  = null; userAux = null;
                    System.out.println("\n 7.-Tomar del Pote\n");
                    System.out.println("nickname del jugador: " + subArg[1]);
                    userAux=ListaUsuario.getInstance().RecorrerListaUsuario(subArg[1]);
                    piezaDelPotote = envioDelPote(userAux.getPartida().getPiezaPote());
                    if (piezaDelPotote != null)
                    {
                        userAux.getPartida().getPiezaJugador().agregarElemento(piezaDelPotote);
                        resultado=RetornoEnvioTomarDelPote(piezaDelPotote.getID(),piezaDelPotote.getValSuperior(),piezaDelPotote.getValInferior(),piezaDelPotote.getImagenA(),piezaDelPotote.getImagenB(),piezaDelPotote.getImagenD(),piezaDelPotote.getImagenI());

                    }
                    else
                        resultado = "false";

                    // resultado=RetornoEnvioTomarDelPote("4","2","4","24a.png","24b.png","24c.png","24d.png");
                    //resultado=RetornoEnvioTomarDelPote (String.valueOf(15),String.valueOf(3), String.valueOf(5),"ImgA","ImgB","ImgI","ImgD");
  /*                  Mensaje -> 7:nickname
Retorno -> TRUE:ID1-X1-Y1-imagenArriba1-imagenAbajo1-imagenIzquierda1-imagenDerecha1 o FALSE
*/
                    if (resultado.compareTo("")!=0)
                        return resultado;
                    //resultado = "mensaje de despedida recibido";
                break;
            }

        }
       return resultado;
    }
}